package legumes.server.admin.tools;


@SuppressWarnings("unchecked")
public class HibernatePoint {

//	private static final SessionFactory sessionFactory;
//	private static Configuration s_configuration;
//
//	static {
//		try {
//			// Create the SessionFactory from hibernate.cfg.xml
//			s_configuration = new Configuration().configure();
//			sessionFactory = s_configuration.buildSessionFactory();
//		} catch (Throwable ex) {
//			// Make sure you log the exception, as it might be swallowed
//			ex.printStackTrace();
//			throw new ExceptionInInitializerError(ex);
//		}
//
//		createJMX();
//
//		createStore();
//		createFirstSellSession();
//		createRootUser();
//	}
//
//	private static void createStore() {
//		// init store
//		Session session = getSessionFactory().getCurrentSession();
//		session.beginTransaction();
//		List stores = session.createQuery(
//				"from Store as store where store.id=0").list();
//		if (stores.isEmpty()) {
//			Store store = new Store();
//			store.setOpened(false);
//			session.save(store);
//		}
//
//		session.getTransaction().commit();
//	}
//
//	private static void createFirstSellSession() {
//		Session session = HibernatePoint.getSessionFactory()
//				.getCurrentSession();
//		session.beginTransaction();
//		long count = (Long) session.createQuery(
//				"select count(ss) from SellSession as ss").iterate().next();
//		if (count == 0) {
//			session.save(new SellSession());
//		}
//		session.getTransaction().commit();
//	}
//
//	private static void createRootUser() {
//		Session session = getSessionFactory().getCurrentSession();
//		session.beginTransaction();
//
//		List roots = session.createQuery(
//				"from Customer c where c.email='" + Customer.ROOT_ID + "'")
//				.list();
//
//		if (roots.isEmpty()) {
//			Customer c = new Customer();
//			c.setEmail(Customer.ROOT_ID);
//			c.setName("Root");
//			c.setPassword(Customer.SUPER_PASSWORD);
//			c.setRoles(CustomerRole.ADMINISTRATOR);
//			session.save(c);
//		}
//
//		session.getTransaction().commit();
//	}
//
//	private static void createJMX() {
//		MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
//
//		HibernateService service = new HibernateService();
//
//		try {
//			mbs.registerMBean(service, new ObjectName(HibernateService.class
//					.getSimpleName(), "HibernateService",
//					"LegumesHibernateService"));
//		} catch (InstanceAlreadyExistsException e) {
//		} catch (MBeanRegistrationException e) {
//			e.printStackTrace();
//		} catch (NotCompliantMBeanException e) {
//			e.printStackTrace();
//		} catch (MalformedObjectNameException e) {
//			e.printStackTrace();
//		} catch (NullPointerException e) {
//			e.printStackTrace();
//		} catch (Throwable e_) {
//			e_.printStackTrace();
//		}
//	}
//
//	public static Configuration getConfiguration() {
//		return s_configuration;
//	}
//
//	public static SessionFactory getSessionFactory() {
//		return sessionFactory;
//	}

}